home *** CD-ROM | disk | FTP | other *** search
- /*
- MP.h
- Version 1.4 (AKA "Developer Release 27")
-
- Header file for the DayStar/Apple Multiprocessing API
- Friday, April 5, 1996 6:08:58 PM
-
- !! WARNING !!
- NAMES BEGINNING WITH "_MP" ARE NOT YET PART OF THE MP API.
- ANY APPLICATION CODE WHICH REFERENCES THESE NAMES IS LIKELY
- TO REQUIRE CHANGES WITH NEW RELEASES OF THE MP LIBRARY.
- */
-
- #ifndef MP_h
- #define MP_h
-
- #include <Types.h>
- #include <CodeFragments.h>
- #include <stdarg.h>
-
-
- #ifdef __cplusplus
- extern "C" {
- #endif
-
-
- #define MPCopyrightNotice \
- "Copyright © 1995, 1996 DayStar Digital, Inc.\n" \
- "Portions Copyright © 1995 Apple Computer, Inc.\n"
-
- #define MPLibraryName "MPLibrary"
- #define MPLibraryCName MPLibraryName
- #define MPLibraryPName "\p" MPLibraryName
-
- #define MP_API_Version "1.4"
- #define MPLibrary_MajorVersion 1
- #define MPLibrary_MinorVersion 4
- #define MPLibrary_Release 0
- #define MPLibrary_DevelopmentRevision 27
-
-
- #define MPLibraryIsLoaded() \
- ((UInt32) _MPIsFullyInitialized != (UInt32) kUnresolvedCFragSymbolAddress \
- && _MPIsFullyInitialized())
-
- #define MPLibraryIsCompatible() \
- _MPLibraryIsCompatible(MP_API_Version, \
- MPLibrary_MajorVersion, \
- MPLibrary_MinorVersion, \
- MPLibrary_Release, \
- MPLibrary_DevelopmentRevision)
-
- typedef SInt32 Duration;
- typedef UInt32 ByteCount;
- typedef UInt32 MPSemaphoreCount;
- typedef UInt32 MPTaskOptions;
-
- typedef OSStatus (*TaskProc)(void *parameter);
- typedef volatile struct _MPTaskID *MPTaskID;
- typedef volatile struct _MPQueueID *MPQueueID;
- typedef volatile struct _MPSemaphoreID *MPSemaphoreID;
- typedef volatile struct _MPCriticalRegionID *MPCriticalRegionID;
- typedef void
- *(*MPRemoteProcedure)(void *parameter);
- typedef void
- (*_MPPrintfHandler)(MPTaskID taskID, const char *format, va_list args);
-
- #define NullTaskProc ((TaskProc) 0)
- #define NullMPTaskID ((MPTaskID) 0)
- #define NullMPQueueID ((MPQueueID) 0)
- #define NullMPSemaphoreID ((MPSemaphoreID) 0)
- #define NullMPCriticalRegionID ((MPCriticalRegionID) 0)
- #define NullMPRemoteProcedure ((MPRemoteProcedure) 0)
- #define Null_MPPrintfHandler ((_MPPrintfHandler) 0)
-
-
- #define kMPNoID ((void *) 0)
-
- #define kMPUseDefaultStackSize 0
- #define kMPNormalTaskOptions 0
-
- enum {
- kDurationImmediate = 0,
- kDurationForever = 0x7fffffff
- };
-
-
- enum MPErrorValues {
- kMPFirstError = -29299,
-
- kMPInvalidIDErr = kMPFirstError,
- kMPInsufficientResourcesErr,
- kMPTaskAbortedErr,
- kMPTimeoutErr,
- kMPDeletedErr,
-
- kMPAllocationFailed = kMPInsufficientResourcesErr,
- kMPInvalidTask = kMPInvalidIDErr,
- kMPInvalidQueue = kMPInvalidIDErr,
- kMPInvalidSemaphore = kMPInvalidIDErr,
- kMPInvalidCriticalRegion = kMPInvalidIDErr,
- kMPTaskDeleted = kMPDeletedErr,
- kMPQueueDeleted = kMPDeletedErr,
- kMPSemaphoreDeleted = kMPDeletedErr,
- kMPCriticalRegionDeleted = kMPDeletedErr,
-
- kMPBadEntryPoint,
- kMPUnrecognizedTaskCreationOptions,
- kMPInappropriateStackSize,
- kMPTaskDoesNotOwnCriticalRegion,
- kMPDurationValueNotYetSupported,
- kMPFunctionNotYetImplemented,
- kMPLibraryInternalInconsistencyError,
- kMPTaskSchedulerIsLocked,
-
- kMPFirstUnassignedErrorValue,
-
- kMPLastError = -29250
- };
-
-
- extern OSStatus
- MPCreateTask(TaskProc entryPoint,
- void *parameter,
- ByteCount stackSize,
- MPQueueID notifyQueue,
- void *terminationParameter1,
- void *terminationParameter2,
- MPTaskOptions options,
- MPTaskID *task),
- MPTerminateTask(MPTaskID task, OSStatus terminationStatus),
- MPCreateQueue(MPQueueID *queue),
- MPNotifyQueue(MPQueueID queue,
- void *param1,
- void *param2,
- void *param3),
- MPWaitOnQueue(MPQueueID queue,
- void **param1,
- void **param2,
- void **param3,
- Duration timeout),
- MPDeleteQueue(MPQueueID queue),
- MPCreateSemaphore(MPSemaphoreCount maximumValue,
- MPSemaphoreCount initialValue,
- MPSemaphoreID *semaphore),
- MPSignalSemaphore(MPSemaphoreID semaphore),
- MPWaitOnSemaphore(MPSemaphoreID semaphore, Duration timeout),
- MPDeleteSemaphore(MPSemaphoreID semaphore),
- MPCreateCriticalRegion(MPCriticalRegionID *criticalRegion),
- MPEnterCriticalRegion(MPCriticalRegionID criticalRegion, Duration timeout),
- MPExitCriticalRegion(MPCriticalRegionID criticalRegion),
- MPDeleteCriticalRegion(MPCriticalRegionID criticalRegion);
-
- extern MPTaskID
- MPCurrentTaskID(void);
-
- extern UInt32
- MPProcessors(void),
- _MPInitializationStatus(void);
-
- extern Boolean
- _MPIsFullyInitialized(void),
- _MPLibraryIsCompatible(char *api,
- UInt32 major,
- UInt32 minor,
- UInt32 release,
- UInt32 revision),
- _MPTaskIsToolboxSafe(MPTaskID task);
-
- extern LogicalAddress
- MPAllocate(ByteCount size),
- _MPAllocateSys(ByteCount size);
-
- extern void
- MPFree(LogicalAddress object),
- MPBlockCopy(LogicalAddress from, LogicalAddress to, ByteCount blockSize),
- MPYield(void),
- MPExit(OSStatus status),
- _MPLibraryVersion(char **api,
- UInt32 *major,
- UInt32 *minor,
- UInt32 *release,
- UInt32 *revision),
- _MPInitializePrintf(_MPPrintfHandler pfn),
- _MPPrintf(const char *format, ...),
- _MPDebugStr(StringPtr s),
- *_MPRPC(MPRemoteProcedure procedure, void *parameter);
-
- extern StringPtr
- _MPStatusPString(OSStatus status);
-
- extern char
- *_MPStatusCString(OSStatus status);
-
-
- #define MPCreateBinarySemaphore(semaphore) \
- MPCreateSemaphore(1, 1, (semaphore))
-
-
- #ifdef __cplusplus
- }
- #endif
-
- #endif
-